/*
mixin file Provide share layer function
此层用来共享使用，多层放置临时feature，如：标绘层会用来放置框选区域
*/
// import GeoJSON from 'ol/format/GeoJSON'
import VectorLayer from 'ol/layer/Vector'
import VectorSource from 'ol/source/Vector'
import { Fill, Stroke, Style } from 'ol/style'
export default {
  data () {
    return {
      shareLayer: null
    }
  },
  // watch: {
  //   // watch
  // },
  // mounted () {
  //   // mounted
  // },
  methods: {
    /**
     * @description 创建share层，共享使用
     * @param oMap {object} 地图对象
     * @return {objecct} 新创建的gridLayer层
     */
    createShareLayer (oMap) {
      if (this.shareLayer) return // 如果已经创建，退出！
      // 创建shareLayer，层默认样式时框选线；
      this.shareLayer = new VectorLayer({
        source: new VectorSource(),
        wrapX: false,
        style: new Style({
          stroke: new Stroke({
            color: '#333333',
            width: 2
          }),
          fill: new Fill({
            color: 'rgba(255,0,0,0)'
          })
        })
      })
      // 添加图层名称
      this.shareLayer.set('name', 'shareLayer')
      oMap.addLayer(this.shareLayer)
      // 调整层级关系
      this.shareLayer.setZIndex(90)
    },

    /**
     * @description 销毁shareLayer层；
     * @param oMap {Object} 地图对象
     * @return null
     */
    destroyShareLayer (oMap = this.imap) {
      if (this.shareLayer) {
        const shareSource = this.shareLayer.getSource()
        shareSource.clear()
        // 其他内容是否也要销毁
        oMap.removeLayer(this.shareLayer)
      }
    },

    /**
     * @description 清空shareLayer层数据；
     * @param null
     * @return null
     */
    clearShareLayerData () {
      // 清空shareLayer数据
      if (this.shareLayer) {
        const shareSource = this.shareLayer.getSource()
        shareSource.clear()
      }
    },

    /**
     * @description 删除共享层中指定ID的元素
     * @param sID {String} 要删除元素的ID
     * @return null
     */
    delShareDataByID (sID) {
      const oFeature = this.shareLayer.getSource().getFeatureById(sID)
      if (oFeature) {
        this.shareLayer.getSource().removeFeature(oFeature)
      }
    }

    // 需要一个根据指定id或名称来删除feature的方法（共享使用，不能全删）
    // 当前方法
  }
}
